package com.baizhi.shane.sys.controller;

import com.baizhi.shane.common.base.Result;
import com.baizhi.shane.constant.ApiMapping;
import com.baizhi.shane.constant.TableNameMapping;
import com.baizhi.shane.sys.dto.SysDivisionLevelDTO;
import com.baizhi.shane.sys.entity.SysDivision;
import com.baizhi.shane.sys.enums.SysDivisionLevelEnum;
import com.baizhi.shane.sys.service.SysDivisionService;
import com.baizhi.shane.sys.vo.DivisionLevelVO;
import com.baizhi.shane.sys.vo.SysDivisionTreeVO;
import com.baizhi.shane.sys.vo.UserSignUpInVO;
import com.baizhi.shane.sys.vo.UserSignUpOutVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 * @author 闻柏智
 * @date 2023/07/29 17:55:02
 */

@RestController
@RequestMapping(TableNameMapping.SYS_DIVISION)
@Api(tags="行政区划")
public class SysDivisionController {

    @Resource
    private SysDivisionService sysDivisionService;

    /**
     * 获取行政区划的级别信息列表
     *
     * @Author 吴若琦
     * @Date 18:01 2023/7/29
     * @Param
     * @return com.baizhi.shane.common.base.Result<java.util.List<com.baizhi.shane.sys.enums.SysDivisionLevelEnum>>
     **/
    @ApiOperation(value="获取行政区划的级别信息列表", notes="获取行政区划的级别信息列表")
    @PostMapping(value = ApiMapping.GET_DIVISION_LEVEL_INFO)
    public Result<List<SysDivisionLevelDTO>> getDivisionLevelInfo() {
        List<SysDivisionLevelDTO> sysDivisionLevelInfoList =
                sysDivisionService.getDivisionLevelInfo();
        return Result.OK(sysDivisionLevelInfoList);
    }

    /**
     * 获取指定等级的行政区划列表
     *
     * @Author 闻柏智
     * @Date 17:09 2023/7/30
     * @Param divisionLevelVO
     * @return com.baizhi.shane.common.base.Result<java.util.List<com.baizhi.shane.sys.entity.SysDivision>>
     **/
    @ApiOperation(value="获取指定等级的行政区划列表", notes="获取指定等级的行政区划列表")
    @PostMapping(value = ApiMapping.GET_DIVISION_LIST_BY_LEVEL)
    public Result<List<SysDivision>> getDivisionListByLevel(@RequestBody DivisionLevelVO divisionLevelVO) {
        List<SysDivision> sysDivisionList = sysDivisionService.getDivisionListByLevel(divisionLevelVO);
        return Result.OK(sysDivisionList);
    }

    @ApiOperation(value="获取行政区划树形结构", notes="获取行政区划树形结构")
    @GetMapping(value = ApiMapping.GET_DIVISION_TREE_BY_LEVEL)
    public Result<List<SysDivisionTreeVO>> getDivisionTreeByLevel() {
        List<SysDivisionTreeVO> sysDivisionTreeVOList = this.sysDivisionService.getDivisionTreeByLevel();
        return Result.OK(sysDivisionTreeVOList);
    }

}
